package br.unisinos.pdm.util;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * Classe para fazer o envio de e-mails sem fazer com que o sistema aguarde o envio
 */
public class EmailUtil extends Thread {

	private String sendTo;
	private String subject;
	private String content;
	
	public EmailUtil(String sendTo, String subject, String content) {
		this.sendTo = sendTo;
		this.subject = subject;
		this.content = content;
	}
	
	
	@Override
	public void run() {
		super.run();
		sendEmail(sendTo, subject, content);
	}
	
	/**
	 * Faz envio de email 
	 */
	protected void sendEmail(String sendTo, String subject, String content) {
		
		final String username = "trocandolivrosapp@gmail.com";
		final String password = "unisinos123";
 
		Properties props = new Properties();
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.starttls.enable", "true");
		props.put("mail.smtp.host", "smtp.gmail.com");
		props.put("mail.smtp.port", "587");
 
		Session session = Session.getInstance(props,
		  new javax.mail.Authenticator() {
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(username, password);
			}
		  });
 
		try {
 
			Message message = new MimeMessage(session);
			message.setFrom(new InternetAddress("trocandolivrosapp@gmail.com"));
			message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(sendTo));
			message.setSubject(subject);
			message.setText(content);
 
			Transport.send(message);
 
		} catch (MessagingException e) {
			throw new RuntimeException(e);
		}

	}
	
}
